//
// Created by martin on 9/4/21.
//

#ifndef FTPSERVER2_0_FILELOCK_H
#define FTPSERVER2_0_FILELOCK_H

typedef struct filelock{
    int rw_refcount; /*  指示读写锁的当前状态：-1 表示这是一个写入锁（任意时刻只有一个）；0 表示锁是可用的；>0 表示当前容纳那么多的读出锁 */
}*FileLock;

FileLock filelock_new(const char *file_path, int connfd);
void filelock_free(FileLock *lock);
int filelock_rwlock_wrlock(FileLock lock);
int filelock_rwlock_rdlock(FileLock lock);
int filelock_rwlock_unlock(FileLock lock);
int filelock_lock(FileLock lock);

#endif //FTPSERVER2_0_FILELOCK_H
